<!-- HTML header for doxygen 1.8.9.1-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.11"/>
<meta name="robots" content="NOINDEX, NOFOLLOW" /> <!-- Prevent indexing by search engines -->
<title>Compute Library: NPYLoader Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
  $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
  $(document).ready(function() { init_search(); });
</script>
<script type="text/x-mathjax-config">
  MathJax.Hub.Config({
    extensions: ["tex2jax.js"],
    jax: ["input/TeX","output/HTML-CSS"],
});
</script><script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td style="padding-left: 0.5em;">
   <div id="projectname">Compute Library
   &#160;<span id="projectnumber">18.03</span>
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.11 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.xhtml"><span>Main&#160;Page</span></a></li>
      <li><a href="pages.xhtml"><span>Related&#160;Pages</span></a></li>
      <li><a href="namespaces.xhtml"><span>Namespaces</span></a></li>
      <li class="current"><a href="annotated.xhtml"><span>Data&#160;Structures</span></a></li>
      <li><a href="files.xhtml"><span>Files</span></a></li>
      <li>
        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
      </li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="annotated.xhtml"><span>Data&#160;Structures</span></a></li>
      <li><a href="classes.xhtml"><span>Data&#160;Structure&#160;Index</span></a></li>
      <li><a href="inherits.xhtml"><span>Class&#160;Hierarchy</span></a></li>
      <li><a href="functions.xhtml"><span>Data&#160;Fields</span></a></li>
    </ul>
  </div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('classarm__compute_1_1utils_1_1_n_p_y_loader.xhtml','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="summary">
<a href="#pub-methods">Public Member Functions</a>  </div>
  <div class="headertitle">
<div class="title">NPYLoader Class Reference</div>  </div>
</div><!--header-->
<div class="contents">

<p><code>#include &lt;<a class="el" href="utils_2_utils_8h_source.xhtml">Utils.h</a>&gt;</code></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a59ac86360353fd935c6979105da7aefa"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1utils_1_1_n_p_y_loader.xhtml#a59ac86360353fd935c6979105da7aefa">NPYLoader</a> ()</td></tr>
<tr class="separator:a59ac86360353fd935c6979105da7aefa"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5988c0b8edbcd872e79d72cd47a8c18b"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1utils_1_1_n_p_y_loader.xhtml#a5988c0b8edbcd872e79d72cd47a8c18b">open</a> (const std::string &amp;npy_filename)</td></tr>
<tr class="memdesc:a5988c0b8edbcd872e79d72cd47a8c18b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Open a NPY file and reads its metadata.  <a href="#a5988c0b8edbcd872e79d72cd47a8c18b">More...</a><br /></td></tr>
<tr class="separator:a5988c0b8edbcd872e79d72cd47a8c18b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2f57f54d8c03b615bb31eee091d8a88a"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1utils_1_1_n_p_y_loader.xhtml#a2f57f54d8c03b615bb31eee091d8a88a">is_open</a> ()</td></tr>
<tr class="memdesc:a2f57f54d8c03b615bb31eee091d8a88a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return true if a NPY file is currently open.  <a href="#a2f57f54d8c03b615bb31eee091d8a88a">More...</a><br /></td></tr>
<tr class="separator:a2f57f54d8c03b615bb31eee091d8a88a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8aa067630bcfd267bf3389ae27e70e76"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1utils_1_1_n_p_y_loader.xhtml#a8aa067630bcfd267bf3389ae27e70e76">is_fortran</a> ()</td></tr>
<tr class="memdesc:a8aa067630bcfd267bf3389ae27e70e76"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return true if a NPY file is in fortran order.  <a href="#a8aa067630bcfd267bf3389ae27e70e76">More...</a><br /></td></tr>
<tr class="separator:a8aa067630bcfd267bf3389ae27e70e76"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6e3c7f7584c89bfed519597f40c08528"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a6e3c7f7584c89bfed519597f40c08528"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1utils_1_1_n_p_y_loader.xhtml#a6e3c7f7584c89bfed519597f40c08528">init_tensor</a> (T &amp;tensor, <a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">arm_compute::DataType</a> dt)</td></tr>
<tr class="memdesc:a6e3c7f7584c89bfed519597f40c08528"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initialise the tensor's metadata with the dimensions of the NPY file currently open.  <a href="#a6e3c7f7584c89bfed519597f40c08528">More...</a><br /></td></tr>
<tr class="separator:a6e3c7f7584c89bfed519597f40c08528"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a055a51a536088065021a54e13968521d"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a055a51a536088065021a54e13968521d"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1utils_1_1_n_p_y_loader.xhtml#a055a51a536088065021a54e13968521d">fill_tensor</a> (T &amp;tensor)</td></tr>
<tr class="memdesc:a055a51a536088065021a54e13968521d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Fill a tensor with the content of the currently open NPY file.  <a href="#a055a51a536088065021a54e13968521d">More...</a><br /></td></tr>
<tr class="separator:a055a51a536088065021a54e13968521d"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock">
<p>Definition at line <a class="el" href="utils_2_utils_8h_source.xhtml#l00492">492</a> of file <a class="el" href="utils_2_utils_8h_source.xhtml">Utils.h</a>.</p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="a59ac86360353fd935c6979105da7aefa"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classarm__compute_1_1utils_1_1_n_p_y_loader.xhtml">NPYLoader</a> </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Definition at line <a class="el" href="utils_2_utils_8h_source.xhtml#l00495">495</a> of file <a class="el" href="utils_2_utils_8h_source.xhtml">Utils.h</a>.</p>
<div class="fragment"><div class="line"><a name="l00496"></a><span class="lineno">  496</span>&#160;        : _fs(), _shape(), _fortran_order(<span class="keyword">false</span>), _typestring()</div><div class="line"><a name="l00497"></a><span class="lineno">  497</span>&#160;    {</div><div class="line"><a name="l00498"></a><span class="lineno">  498</span>&#160;    }</div></div><!-- fragment -->
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a class="anchor" id="a055a51a536088065021a54e13968521d"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void fill_tensor </td>
          <td>(</td>
          <td class="paramtype">T &amp;&#160;</td>
          <td class="paramname"><em>tensor</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Fill a tensor with the content of the currently open NPY file. </p>
<dl class="section note"><dt>Note</dt><dd>If the tensor is a <a class="el" href="classarm__compute_1_1_c_l_tensor.xhtml" title="Basic implementation of the OpenCL tensor interface. ">CLTensor</a>, the function maps and unmaps the tensor</dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in,out]</td><td class="paramname">tensor</td><td><a class="el" href="classarm__compute_1_1_tensor.xhtml" title="Basic implementation of the tensor interface. ">Tensor</a> to fill (Must be allocated, and of matching dimensions with the opened NPY). </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="utils_2_utils_8h_source.xhtml#l00561">561</a> of file <a class="el" href="utils_2_utils_8h_source.xhtml">Utils.h</a>.</p>

<p>References <a class="el" href="core_2_error_8h_source.xhtml#l00238">ARM_COMPUTE_ERROR</a>, <a class="el" href="core_2_error_8h_source.xhtml#l00306">ARM_COMPUTE_ERROR_ON</a>, <a class="el" href="_validate_8h_source.xhtml#l00655">ARM_COMPUTE_ERROR_ON_DATA_TYPE_NOT_IN</a>, <a class="el" href="core_2_error_8h_source.xhtml#l00297">ARM_COMPUTE_ERROR_ON_MSG</a>, <a class="el" href="core_2_error_8h_source.xhtml#l00147">ARM_COMPUTE_UNUSED</a>, <a class="el" href="_helpers_8inl_source.xhtml#l00122">arm_compute::execute_window_loop()</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a44ad4ef5a76e6aa6fb3e3fa079a54fda">arm_compute::F32</a>, <a class="el" href="utils_2_utils_8h_source.xhtml#l00122">arm_compute::utils::get_typestring()</a>, <a class="el" href="utils_2_utils_8h_source.xhtml#l00174">arm_compute::utils::map()</a>, <a class="el" href="utils_2_utils_8h_source.xhtml#l00185">arm_compute::utils::unmap()</a>, and <a class="el" href="_window_8inl_source.xhtml#l00240">Window::use_tensor_dimensions()</a>.</p>
<div class="fragment"><div class="line"><a name="l00562"></a><span class="lineno">  562</span>&#160;    {</div><div class="line"><a name="l00563"></a><span class="lineno">  563</span>&#160;        <a class="code" href="core_2_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(!<a class="code" href="classarm__compute_1_1utils_1_1_n_p_y_loader.xhtml#a2f57f54d8c03b615bb31eee091d8a88a">is_open</a>());</div><div class="line"><a name="l00564"></a><span class="lineno">  564</span>&#160;        <a class="code" href="_validate_8h.xhtml#a4264d7e3318c4188e48127a75f3f0f8a">ARM_COMPUTE_ERROR_ON_DATA_TYPE_NOT_IN</a>(&amp;tensor, <a class="code" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a44ad4ef5a76e6aa6fb3e3fa079a54fda">arm_compute::DataType::F32</a>);</div><div class="line"><a name="l00565"></a><span class="lineno">  565</span>&#160;        <span class="keywordflow">try</span></div><div class="line"><a name="l00566"></a><span class="lineno">  566</span>&#160;        {</div><div class="line"><a name="l00567"></a><span class="lineno">  567</span>&#160;            <span class="comment">// Map buffer if creating a CLTensor</span></div><div class="line"><a name="l00568"></a><span class="lineno">  568</span>&#160;            <a class="code" href="namespacearm__compute_1_1utils.xhtml#a9c3303817ba653b5d1e78efb88d02bcf">map</a>(tensor, <span class="keyword">true</span>);</div><div class="line"><a name="l00569"></a><span class="lineno">  569</span>&#160;</div><div class="line"><a name="l00570"></a><span class="lineno">  570</span>&#160;            <span class="comment">// Check if the file is large enough to fill the tensor</span></div><div class="line"><a name="l00571"></a><span class="lineno">  571</span>&#160;            <span class="keyword">const</span> <span class="keywordtype">size_t</span> current_position = _fs.tellg();</div><div class="line"><a name="l00572"></a><span class="lineno">  572</span>&#160;            _fs.seekg(0, std::ios_base::end);</div><div class="line"><a name="l00573"></a><span class="lineno">  573</span>&#160;            <span class="keyword">const</span> <span class="keywordtype">size_t</span> end_position = _fs.tellg();</div><div class="line"><a name="l00574"></a><span class="lineno">  574</span>&#160;            _fs.seekg(current_position, std::ios_base::beg);</div><div class="line"><a name="l00575"></a><span class="lineno">  575</span>&#160;</div><div class="line"><a name="l00576"></a><span class="lineno">  576</span>&#160;            <a class="code" href="core_2_error_8h.xhtml#a5bbdcf574d3f5e412fa6a1117911e67b">ARM_COMPUTE_ERROR_ON_MSG</a>((end_position - current_position) &lt; tensor.info()-&gt;tensor_shape().total_size() * tensor.info()-&gt;element_size(),</div><div class="line"><a name="l00577"></a><span class="lineno">  577</span>&#160;                                     <span class="stringliteral">&quot;Not enough data in file&quot;</span>);</div><div class="line"><a name="l00578"></a><span class="lineno">  578</span>&#160;            <a class="code" href="core_2_error_8h.xhtml#a4103adbb45806b2f2002d44b91d0d206">ARM_COMPUTE_UNUSED</a>(end_position);</div><div class="line"><a name="l00579"></a><span class="lineno">  579</span>&#160;</div><div class="line"><a name="l00580"></a><span class="lineno">  580</span>&#160;            <span class="comment">// Check if the typestring matches the given one</span></div><div class="line"><a name="l00581"></a><span class="lineno">  581</span>&#160;            std::string expect_typestr = <a class="code" href="namespacearm__compute_1_1utils.xhtml#a7990fd2b875e2f6d4c1eded54539cb19">get_typestring</a>(tensor.info()-&gt;data_type());</div><div class="line"><a name="l00582"></a><span class="lineno">  582</span>&#160;            <a class="code" href="core_2_error_8h.xhtml#a5bbdcf574d3f5e412fa6a1117911e67b">ARM_COMPUTE_ERROR_ON_MSG</a>(_typestring != expect_typestr, <span class="stringliteral">&quot;Typestrings mismatch&quot;</span>);</div><div class="line"><a name="l00583"></a><span class="lineno">  583</span>&#160;</div><div class="line"><a name="l00584"></a><span class="lineno">  584</span>&#160;            <span class="comment">// Validate tensor shape</span></div><div class="line"><a name="l00585"></a><span class="lineno">  585</span>&#160;            <a class="code" href="core_2_error_8h.xhtml#a5bbdcf574d3f5e412fa6a1117911e67b">ARM_COMPUTE_ERROR_ON_MSG</a>(_shape.size() != tensor.info()-&gt;tensor_shape().num_dimensions(), <span class="stringliteral">&quot;Tensor ranks mismatch&quot;</span>);</div><div class="line"><a name="l00586"></a><span class="lineno">  586</span>&#160;            <span class="keywordflow">if</span>(_fortran_order)</div><div class="line"><a name="l00587"></a><span class="lineno">  587</span>&#160;            {</div><div class="line"><a name="l00588"></a><span class="lineno">  588</span>&#160;                <span class="keywordflow">for</span>(<span class="keywordtype">size_t</span> i = 0; i &lt; _shape.size(); ++i)</div><div class="line"><a name="l00589"></a><span class="lineno">  589</span>&#160;                {</div><div class="line"><a name="l00590"></a><span class="lineno">  590</span>&#160;                    <a class="code" href="core_2_error_8h.xhtml#a5bbdcf574d3f5e412fa6a1117911e67b">ARM_COMPUTE_ERROR_ON_MSG</a>(tensor.info()-&gt;tensor_shape()[i] != _shape[i], <span class="stringliteral">&quot;Tensor dimensions mismatch&quot;</span>);</div><div class="line"><a name="l00591"></a><span class="lineno">  591</span>&#160;                }</div><div class="line"><a name="l00592"></a><span class="lineno">  592</span>&#160;            }</div><div class="line"><a name="l00593"></a><span class="lineno">  593</span>&#160;            <span class="keywordflow">else</span></div><div class="line"><a name="l00594"></a><span class="lineno">  594</span>&#160;            {</div><div class="line"><a name="l00595"></a><span class="lineno">  595</span>&#160;                <span class="keywordflow">for</span>(<span class="keywordtype">size_t</span> i = 0; i &lt; _shape.size(); ++i)</div><div class="line"><a name="l00596"></a><span class="lineno">  596</span>&#160;                {</div><div class="line"><a name="l00597"></a><span class="lineno">  597</span>&#160;                    <a class="code" href="core_2_error_8h.xhtml#a5bbdcf574d3f5e412fa6a1117911e67b">ARM_COMPUTE_ERROR_ON_MSG</a>(tensor.info()-&gt;tensor_shape()[i] != _shape[_shape.size() - i - 1], <span class="stringliteral">&quot;Tensor dimensions mismatch&quot;</span>);</div><div class="line"><a name="l00598"></a><span class="lineno">  598</span>&#160;                }</div><div class="line"><a name="l00599"></a><span class="lineno">  599</span>&#160;            }</div><div class="line"><a name="l00600"></a><span class="lineno">  600</span>&#160;</div><div class="line"><a name="l00601"></a><span class="lineno">  601</span>&#160;            <span class="keywordflow">switch</span>(tensor.info()-&gt;data_type())</div><div class="line"><a name="l00602"></a><span class="lineno">  602</span>&#160;            {</div><div class="line"><a name="l00603"></a><span class="lineno">  603</span>&#160;                <span class="keywordflow">case</span> <a class="code" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a44ad4ef5a76e6aa6fb3e3fa079a54fda">arm_compute::DataType::F32</a>:</div><div class="line"><a name="l00604"></a><span class="lineno">  604</span>&#160;                {</div><div class="line"><a name="l00605"></a><span class="lineno">  605</span>&#160;                    <span class="comment">// Read data</span></div><div class="line"><a name="l00606"></a><span class="lineno">  606</span>&#160;                    <span class="keywordflow">if</span>(tensor.info()-&gt;padding().empty())</div><div class="line"><a name="l00607"></a><span class="lineno">  607</span>&#160;                    {</div><div class="line"><a name="l00608"></a><span class="lineno">  608</span>&#160;                        <span class="comment">// If tensor has no padding read directly from stream.</span></div><div class="line"><a name="l00609"></a><span class="lineno">  609</span>&#160;                        _fs.read(reinterpret_cast&lt;char *&gt;(tensor.buffer()), tensor.info()-&gt;total_size());</div><div class="line"><a name="l00610"></a><span class="lineno">  610</span>&#160;                    }</div><div class="line"><a name="l00611"></a><span class="lineno">  611</span>&#160;                    <span class="keywordflow">else</span></div><div class="line"><a name="l00612"></a><span class="lineno">  612</span>&#160;                    {</div><div class="line"><a name="l00613"></a><span class="lineno">  613</span>&#160;                        <span class="comment">// If tensor has padding accessing tensor elements through execution window.</span></div><div class="line"><a name="l00614"></a><span class="lineno">  614</span>&#160;                        Window window;</div><div class="line"><a name="l00615"></a><span class="lineno">  615</span>&#160;                        window.use_tensor_dimensions(tensor.info()-&gt;tensor_shape());</div><div class="line"><a name="l00616"></a><span class="lineno">  616</span>&#160;</div><div class="line"><a name="l00617"></a><span class="lineno">  617</span>&#160;                        <a class="code" href="namespacearm__compute.xhtml#a6c0dcc38187027dcb89cd9724bc5a823">execute_window_loop</a>(window, [&amp;](<span class="keyword">const</span> Coordinates &amp; <span class="keywordtype">id</span>)</div><div class="line"><a name="l00618"></a><span class="lineno">  618</span>&#160;                        {</div><div class="line"><a name="l00619"></a><span class="lineno">  619</span>&#160;                            _fs.read(reinterpret_cast&lt;char *&gt;(tensor.ptr_to_element(<span class="keywordtype">id</span>)), tensor.info()-&gt;element_size());</div><div class="line"><a name="l00620"></a><span class="lineno">  620</span>&#160;                        });</div><div class="line"><a name="l00621"></a><span class="lineno">  621</span>&#160;                    }</div><div class="line"><a name="l00622"></a><span class="lineno">  622</span>&#160;</div><div class="line"><a name="l00623"></a><span class="lineno">  623</span>&#160;                    <span class="keywordflow">break</span>;</div><div class="line"><a name="l00624"></a><span class="lineno">  624</span>&#160;                }</div><div class="line"><a name="l00625"></a><span class="lineno">  625</span>&#160;                <span class="keywordflow">default</span>:</div><div class="line"><a name="l00626"></a><span class="lineno">  626</span>&#160;                    <a class="code" href="core_2_error_8h.xhtml#a05b19c75afe9c24200a62b9724734bbd">ARM_COMPUTE_ERROR</a>(<span class="stringliteral">&quot;Unsupported data type&quot;</span>);</div><div class="line"><a name="l00627"></a><span class="lineno">  627</span>&#160;            }</div><div class="line"><a name="l00628"></a><span class="lineno">  628</span>&#160;</div><div class="line"><a name="l00629"></a><span class="lineno">  629</span>&#160;            <span class="comment">// Unmap buffer if creating a CLTensor</span></div><div class="line"><a name="l00630"></a><span class="lineno">  630</span>&#160;            <a class="code" href="namespacearm__compute_1_1utils.xhtml#a4ff2134cb88cb5a27120cddb98b59774">unmap</a>(tensor);</div><div class="line"><a name="l00631"></a><span class="lineno">  631</span>&#160;        }</div><div class="line"><a name="l00632"></a><span class="lineno">  632</span>&#160;        <span class="keywordflow">catch</span>(<span class="keyword">const</span> std::ifstream::failure &amp;e)</div><div class="line"><a name="l00633"></a><span class="lineno">  633</span>&#160;        {</div><div class="line"><a name="l00634"></a><span class="lineno">  634</span>&#160;            <a class="code" href="core_2_error_8h.xhtml#a05b19c75afe9c24200a62b9724734bbd">ARM_COMPUTE_ERROR</a>(<span class="stringliteral">&quot;Loading NPY file: %s&quot;</span>, e.what());</div><div class="line"><a name="l00635"></a><span class="lineno">  635</span>&#160;        }</div><div class="line"><a name="l00636"></a><span class="lineno">  636</span>&#160;    }</div><div class="ttc" id="core_2_error_8h_xhtml_a54a6080c9f4df1f908e57a9bbb46f5da"><div class="ttname"><a href="core_2_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR_ON(cond)</div><div class="ttdoc">If the condition is true then an error message is printed and an exception thrown. </div><div class="ttdef"><b>Definition:</b> <a href="core_2_error_8h_source.xhtml#l00306">Error.h:306</a></div></div>
<div class="ttc" id="core_2_error_8h_xhtml_a05b19c75afe9c24200a62b9724734bbd"><div class="ttname"><a href="core_2_error_8h.xhtml#a05b19c75afe9c24200a62b9724734bbd">ARM_COMPUTE_ERROR</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR(...)</div><div class="ttdoc">Print the given message then throw an std::runtime_error. </div><div class="ttdef"><b>Definition:</b> <a href="core_2_error_8h_source.xhtml#l00238">Error.h:238</a></div></div>
<div class="ttc" id="namespacearm__compute_xhtml_ab4e88c89b3b7ea1735996cc4def22d58a44ad4ef5a76e6aa6fb3e3fa079a54fda"><div class="ttname"><a href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a44ad4ef5a76e6aa6fb3e3fa079a54fda">arm_compute::Format::F32</a></div><div class="ttdoc">1 channel, 1 F32 per channel </div></div>
<div class="ttc" id="core_2_error_8h_xhtml_a4103adbb45806b2f2002d44b91d0d206"><div class="ttname"><a href="core_2_error_8h.xhtml#a4103adbb45806b2f2002d44b91d0d206">ARM_COMPUTE_UNUSED</a></div><div class="ttdeci">#define ARM_COMPUTE_UNUSED(var)</div><div class="ttdoc">To avoid unused variables warnings. </div><div class="ttdef"><b>Definition:</b> <a href="core_2_error_8h_source.xhtml#l00147">Error.h:147</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1utils_xhtml_a4ff2134cb88cb5a27120cddb98b59774"><div class="ttname"><a href="namespacearm__compute_1_1utils.xhtml#a4ff2134cb88cb5a27120cddb98b59774">arm_compute::utils::unmap</a></div><div class="ttdeci">void unmap(T &amp;tensor)</div><div class="ttdoc">Unmaps a tensor if needed. </div><div class="ttdef"><b>Definition:</b> <a href="utils_2_utils_8h_source.xhtml#l00185">Utils.h:185</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1utils_xhtml_a7990fd2b875e2f6d4c1eded54539cb19"><div class="ttname"><a href="namespacearm__compute_1_1utils.xhtml#a7990fd2b875e2f6d4c1eded54539cb19">arm_compute::utils::get_typestring</a></div><div class="ttdeci">std::string get_typestring(DataType data_type)</div><div class="ttdoc">Obtain numpy type string from DataType. </div><div class="ttdef"><b>Definition:</b> <a href="utils_2_utils_8h_source.xhtml#l00122">Utils.h:122</a></div></div>
<div class="ttc" id="namespacearm__compute_xhtml_a6c0dcc38187027dcb89cd9724bc5a823"><div class="ttname"><a href="namespacearm__compute.xhtml#a6c0dcc38187027dcb89cd9724bc5a823">arm_compute::execute_window_loop</a></div><div class="ttdeci">void execute_window_loop(const Window &amp;w, L &amp;&amp;lambda_function, Ts &amp;&amp;...iterators)</div><div class="ttdoc">Iterate through the passed window, automatically adjusting the iterators and calling the lambda_funct...</div><div class="ttdef"><b>Definition:</b> <a href="_helpers_8inl_source.xhtml#l00122">Helpers.inl:122</a></div></div>
<div class="ttc" id="classarm__compute_1_1utils_1_1_n_p_y_loader_xhtml_a2f57f54d8c03b615bb31eee091d8a88a"><div class="ttname"><a href="classarm__compute_1_1utils_1_1_n_p_y_loader.xhtml#a2f57f54d8c03b615bb31eee091d8a88a">arm_compute::utils::NPYLoader::is_open</a></div><div class="ttdeci">bool is_open()</div><div class="ttdoc">Return true if a NPY file is currently open. </div><div class="ttdef"><b>Definition:</b> <a href="utils_2_utils_8h_source.xhtml#l00520">Utils.h:520</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1utils_xhtml_a9c3303817ba653b5d1e78efb88d02bcf"><div class="ttname"><a href="namespacearm__compute_1_1utils.xhtml#a9c3303817ba653b5d1e78efb88d02bcf">arm_compute::utils::map</a></div><div class="ttdeci">void map(T &amp;tensor, bool blocking)</div><div class="ttdoc">Maps a tensor if needed. </div><div class="ttdef"><b>Definition:</b> <a href="utils_2_utils_8h_source.xhtml#l00174">Utils.h:174</a></div></div>
<div class="ttc" id="core_2_error_8h_xhtml_a5bbdcf574d3f5e412fa6a1117911e67b"><div class="ttname"><a href="core_2_error_8h.xhtml#a5bbdcf574d3f5e412fa6a1117911e67b">ARM_COMPUTE_ERROR_ON_MSG</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR_ON_MSG(cond,...)</div><div class="ttdef"><b>Definition:</b> <a href="core_2_error_8h_source.xhtml#l00297">Error.h:297</a></div></div>
<div class="ttc" id="_validate_8h_xhtml_a4264d7e3318c4188e48127a75f3f0f8a"><div class="ttname"><a href="_validate_8h.xhtml#a4264d7e3318c4188e48127a75f3f0f8a">ARM_COMPUTE_ERROR_ON_DATA_TYPE_NOT_IN</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR_ON_DATA_TYPE_NOT_IN(t,...)</div><div class="ttdef"><b>Definition:</b> <a href="_validate_8h_source.xhtml#l00655">Validate.h:655</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a class="anchor" id="a6e3c7f7584c89bfed519597f40c08528"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void init_tensor </td>
          <td>(</td>
          <td class="paramtype">T &amp;&#160;</td>
          <td class="paramname"><em>tensor</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">arm_compute::DataType</a>&#160;</td>
          <td class="paramname"><em>dt</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Initialise the tensor's metadata with the dimensions of the NPY file currently open. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[out]</td><td class="paramname">tensor</td><td><a class="el" href="classarm__compute_1_1_tensor.xhtml" title="Basic implementation of the tensor interface. ">Tensor</a> to initialise </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">dt</td><td>Data type to use for the tensor </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="utils_2_utils_8h_source.xhtml#l00537">537</a> of file <a class="el" href="utils_2_utils_8h_source.xhtml">Utils.h</a>.</p>

<p>References <a class="el" href="core_2_error_8h_source.xhtml#l00306">ARM_COMPUTE_ERROR_ON</a>, <a class="el" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a44ad4ef5a76e6aa6fb3e3fa079a54fda">arm_compute::F32</a>, <a class="el" href="_tensor_shape_8h_source.xhtml#l00077">TensorShape::set()</a>, <a class="el" href="_dimensions_8h_source.xhtml#l00128">Dimensions&lt; T &gt;::set_num_dimensions()</a>, and <a class="el" href="_c_l_2_convolution_8cpp_source.xhtml#l00133">arm_compute::test::validation::shape</a>.</p>
<div class="fragment"><div class="line"><a name="l00538"></a><span class="lineno">  538</span>&#160;    {</div><div class="line"><a name="l00539"></a><span class="lineno">  539</span>&#160;        <a class="code" href="core_2_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(!<a class="code" href="classarm__compute_1_1utils_1_1_n_p_y_loader.xhtml#a2f57f54d8c03b615bb31eee091d8a88a">is_open</a>());</div><div class="line"><a name="l00540"></a><span class="lineno">  540</span>&#160;        <a class="code" href="core_2_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(dt != <a class="code" href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a44ad4ef5a76e6aa6fb3e3fa079a54fda">arm_compute::DataType::F32</a>);</div><div class="line"><a name="l00541"></a><span class="lineno">  541</span>&#160;</div><div class="line"><a name="l00542"></a><span class="lineno">  542</span>&#160;        <span class="comment">// Use the size of the input NPY tensor</span></div><div class="line"><a name="l00543"></a><span class="lineno">  543</span>&#160;        TensorShape <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a45cde9abb508c62d67c3bb2b9bf566a5">shape</a>;</div><div class="line"><a name="l00544"></a><span class="lineno">  544</span>&#160;        shape.set_num_dimensions(_shape.size());</div><div class="line"><a name="l00545"></a><span class="lineno">  545</span>&#160;        <span class="keywordflow">for</span>(<span class="keywordtype">size_t</span> i = 0; i &lt; _shape.size(); ++i)</div><div class="line"><a name="l00546"></a><span class="lineno">  546</span>&#160;        {</div><div class="line"><a name="l00547"></a><span class="lineno">  547</span>&#160;            shape.set(i, _shape.at(i));</div><div class="line"><a name="l00548"></a><span class="lineno">  548</span>&#160;        }</div><div class="line"><a name="l00549"></a><span class="lineno">  549</span>&#160;</div><div class="line"><a name="l00550"></a><span class="lineno">  550</span>&#160;        <a class="code" href="classarm__compute_1_1_tensor_info.xhtml">arm_compute::TensorInfo</a> tensor_info(shape, 1, dt);</div><div class="line"><a name="l00551"></a><span class="lineno">  551</span>&#160;        tensor.allocator()-&gt;init(tensor_info);</div><div class="line"><a name="l00552"></a><span class="lineno">  552</span>&#160;    }</div><div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a45cde9abb508c62d67c3bb2b9bf566a5"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a45cde9abb508c62d67c3bb2b9bf566a5">arm_compute::test::validation::shape</a></div><div class="ttdeci">shape</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_convolution_8cpp_source.xhtml#l00133">Convolution.cpp:133</a></div></div>
<div class="ttc" id="core_2_error_8h_xhtml_a54a6080c9f4df1f908e57a9bbb46f5da"><div class="ttname"><a href="core_2_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR_ON(cond)</div><div class="ttdoc">If the condition is true then an error message is printed and an exception thrown. </div><div class="ttdef"><b>Definition:</b> <a href="core_2_error_8h_source.xhtml#l00306">Error.h:306</a></div></div>
<div class="ttc" id="namespacearm__compute_xhtml_ab4e88c89b3b7ea1735996cc4def22d58a44ad4ef5a76e6aa6fb3e3fa079a54fda"><div class="ttname"><a href="namespacearm__compute.xhtml#ab4e88c89b3b7ea1735996cc4def22d58a44ad4ef5a76e6aa6fb3e3fa079a54fda">arm_compute::Format::F32</a></div><div class="ttdoc">1 channel, 1 F32 per channel </div></div>
<div class="ttc" id="classarm__compute_1_1utils_1_1_n_p_y_loader_xhtml_a2f57f54d8c03b615bb31eee091d8a88a"><div class="ttname"><a href="classarm__compute_1_1utils_1_1_n_p_y_loader.xhtml#a2f57f54d8c03b615bb31eee091d8a88a">arm_compute::utils::NPYLoader::is_open</a></div><div class="ttdeci">bool is_open()</div><div class="ttdoc">Return true if a NPY file is currently open. </div><div class="ttdef"><b>Definition:</b> <a href="utils_2_utils_8h_source.xhtml#l00520">Utils.h:520</a></div></div>
<div class="ttc" id="classarm__compute_1_1_tensor_info_xhtml"><div class="ttname"><a href="classarm__compute_1_1_tensor_info.xhtml">arm_compute::TensorInfo</a></div><div class="ttdoc">Store the tensor&amp;#39;s metadata. </div><div class="ttdef"><b>Definition:</b> <a href="_tensor_info_8h_source.xhtml#l00044">TensorInfo.h:44</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a class="anchor" id="a8aa067630bcfd267bf3389ae27e70e76"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">bool is_fortran </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Return true if a NPY file is in fortran order. </p>

<p>Definition at line <a class="el" href="utils_2_utils_8h_source.xhtml#l00526">526</a> of file <a class="el" href="utils_2_utils_8h_source.xhtml">Utils.h</a>.</p>
<div class="fragment"><div class="line"><a name="l00527"></a><span class="lineno">  527</span>&#160;    {</div><div class="line"><a name="l00528"></a><span class="lineno">  528</span>&#160;        <span class="keywordflow">return</span> _fortran_order;</div><div class="line"><a name="l00529"></a><span class="lineno">  529</span>&#160;    }</div></div><!-- fragment -->
</div>
</div>
<a class="anchor" id="a2f57f54d8c03b615bb31eee091d8a88a"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">bool is_open </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Return true if a NPY file is currently open. </p>

<p>Definition at line <a class="el" href="utils_2_utils_8h_source.xhtml#l00520">520</a> of file <a class="el" href="utils_2_utils_8h_source.xhtml">Utils.h</a>.</p>
<div class="fragment"><div class="line"><a name="l00521"></a><span class="lineno">  521</span>&#160;    {</div><div class="line"><a name="l00522"></a><span class="lineno">  522</span>&#160;        <span class="keywordflow">return</span> _fs.is_open();</div><div class="line"><a name="l00523"></a><span class="lineno">  523</span>&#160;    }</div></div><!-- fragment -->
</div>
</div>
<a class="anchor" id="a5988c0b8edbcd872e79d72cd47a8c18b"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void open </td>
          <td>(</td>
          <td class="paramtype">const std::string &amp;&#160;</td>
          <td class="paramname"><em>npy_filename</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Open a NPY file and reads its metadata. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">npy_filename</td><td>File to open </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="utils_2_utils_8h_source.xhtml#l00504">504</a> of file <a class="el" href="utils_2_utils_8h_source.xhtml">Utils.h</a>.</p>

<p>References <a class="el" href="core_2_error_8h_source.xhtml#l00238">ARM_COMPUTE_ERROR</a>, <a class="el" href="core_2_error_8h_source.xhtml#l00306">ARM_COMPUTE_ERROR_ON</a>, and <a class="el" href="utils_2_utils_8cpp_source.xhtml#l00175">arm_compute::utils::parse_npy_header()</a>.</p>
<div class="fragment"><div class="line"><a name="l00505"></a><span class="lineno">  505</span>&#160;    {</div><div class="line"><a name="l00506"></a><span class="lineno">  506</span>&#160;        <a class="code" href="core_2_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a>(<a class="code" href="classarm__compute_1_1utils_1_1_n_p_y_loader.xhtml#a2f57f54d8c03b615bb31eee091d8a88a">is_open</a>());</div><div class="line"><a name="l00507"></a><span class="lineno">  507</span>&#160;        <span class="keywordflow">try</span></div><div class="line"><a name="l00508"></a><span class="lineno">  508</span>&#160;        {</div><div class="line"><a name="l00509"></a><span class="lineno">  509</span>&#160;            _fs.exceptions(std::ifstream::failbit | std::ifstream::badbit);</div><div class="line"><a name="l00510"></a><span class="lineno">  510</span>&#160;            _fs.open(npy_filename, std::ios::in | std::ios::binary);</div><div class="line"><a name="l00511"></a><span class="lineno">  511</span>&#160;</div><div class="line"><a name="l00512"></a><span class="lineno">  512</span>&#160;            std::tie(_shape, _fortran_order, _typestring) = <a class="code" href="namespacearm__compute_1_1utils.xhtml#acdab4f47904c52221c85cc80f408f183">parse_npy_header</a>(_fs);</div><div class="line"><a name="l00513"></a><span class="lineno">  513</span>&#160;        }</div><div class="line"><a name="l00514"></a><span class="lineno">  514</span>&#160;        <span class="keywordflow">catch</span>(<span class="keyword">const</span> std::ifstream::failure &amp;e)</div><div class="line"><a name="l00515"></a><span class="lineno">  515</span>&#160;        {</div><div class="line"><a name="l00516"></a><span class="lineno">  516</span>&#160;            <a class="code" href="core_2_error_8h.xhtml#a05b19c75afe9c24200a62b9724734bbd">ARM_COMPUTE_ERROR</a>(<span class="stringliteral">&quot;Accessing %s: %s&quot;</span>, npy_filename.c_str(), e.what());</div><div class="line"><a name="l00517"></a><span class="lineno">  517</span>&#160;        }</div><div class="line"><a name="l00518"></a><span class="lineno">  518</span>&#160;    }</div><div class="ttc" id="core_2_error_8h_xhtml_a54a6080c9f4df1f908e57a9bbb46f5da"><div class="ttname"><a href="core_2_error_8h.xhtml#a54a6080c9f4df1f908e57a9bbb46f5da">ARM_COMPUTE_ERROR_ON</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR_ON(cond)</div><div class="ttdoc">If the condition is true then an error message is printed and an exception thrown. </div><div class="ttdef"><b>Definition:</b> <a href="core_2_error_8h_source.xhtml#l00306">Error.h:306</a></div></div>
<div class="ttc" id="core_2_error_8h_xhtml_a05b19c75afe9c24200a62b9724734bbd"><div class="ttname"><a href="core_2_error_8h.xhtml#a05b19c75afe9c24200a62b9724734bbd">ARM_COMPUTE_ERROR</a></div><div class="ttdeci">#define ARM_COMPUTE_ERROR(...)</div><div class="ttdoc">Print the given message then throw an std::runtime_error. </div><div class="ttdef"><b>Definition:</b> <a href="core_2_error_8h_source.xhtml#l00238">Error.h:238</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1utils_xhtml_acdab4f47904c52221c85cc80f408f183"><div class="ttname"><a href="namespacearm__compute_1_1utils.xhtml#acdab4f47904c52221c85cc80f408f183">arm_compute::utils::parse_npy_header</a></div><div class="ttdeci">std::tuple&lt; std::vector&lt; unsigned long &gt;, bool, std::string &gt; parse_npy_header(std::ifstream &amp;fs)</div><div class="ttdoc">Parse the npy header from an input file stream. </div><div class="ttdef"><b>Definition:</b> <a href="utils_2_utils_8cpp_source.xhtml#l00175">Utils.cpp:175</a></div></div>
<div class="ttc" id="classarm__compute_1_1utils_1_1_n_p_y_loader_xhtml_a2f57f54d8c03b615bb31eee091d8a88a"><div class="ttname"><a href="classarm__compute_1_1utils_1_1_n_p_y_loader.xhtml#a2f57f54d8c03b615bb31eee091d8a88a">arm_compute::utils::NPYLoader::is_open</a></div><div class="ttdeci">bool is_open()</div><div class="ttdoc">Return true if a NPY file is currently open. </div><div class="ttdef"><b>Definition:</b> <a href="utils_2_utils_8h_source.xhtml#l00520">Utils.h:520</a></div></div>
</div><!-- fragment -->
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>utils/<a class="el" href="utils_2_utils_8h_source.xhtml">Utils.h</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><a class="el" href="namespacearm__compute.xhtml">arm_compute</a></li><li class="navelem"><a class="el" href="namespacearm__compute_1_1utils.xhtml">utils</a></li><li class="navelem"><a class="el" href="classarm__compute_1_1utils_1_1_n_p_y_loader.xhtml">NPYLoader</a></li>
    <li class="footer">Generated on Fri Mar 2 2018 12:38:01 for Compute Library by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.11 </li>
  </ul>
</div>
</body>
</html>
